﻿#region imports

using System;
using System.Net;

#endregion

namespace Codeplex.ODataTFS.Model.Serialization
{
	public class TFSProxyFactory
	{
		private readonly ICredentials _tfsCredentials;
		private readonly Uri _tfsUri;

		public TFSProxyFactory(Uri tfsUri, ICredentials credentials)
		{
			_tfsUri = tfsUri;
			_tfsCredentials = credentials;
		}

		public TFSAttachmentProxy TfsAttachmentProxy
		{
			get { return new TFSAttachmentProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSBranchProxy TfsBranchProxy
		{
			get { return new TFSBranchProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSBuildProxy TfsBuildProxy
		{
			get { return new TFSBuildProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSBuildDefinitionProxy TfsBuildDefinitionProxy
		{
			get { return new TFSBuildDefinitionProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSChangeProxy TfsChangeProxy
		{
			get { return new TFSChangeProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSChangesetProxy TfsChangesetProxy
		{
			get { return new TFSChangesetProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSProjectProxy TfsProjectProxy
		{
			get { return new TFSProjectProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSQueryProxy TfsQueryProxy
		{
			get { return new TFSQueryProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSWorkItemProxy TfsWorkItemProxy
		{
			get { return new TFSWorkItemProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSAreaPathProxy TfsAreaPathProxy
		{
			get { return new TFSAreaPathProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSLinkProxy TfsLinkProxy
		{
			get { return new TFSLinkProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSIterationPathProxy TfsIterationPathProxy
		{
			get { return new TFSIterationPathProxy(_tfsUri, _tfsCredentials); }
		}

		public TFSUserProxy TfsUserProxy
		{
			get { return new TFSUserProxy(_tfsUri, _tfsCredentials); }
		}
	}
}
